home *** CD-ROM | disk | FTP | other *** search
Wrap
@DATABASE "dopus/ipc.h" @MASTER "opussdk:include/dopus/ipc.h" @REMARK (c) Dr Greg Perry and Jonathan Potter, GPSoftware 1996 @REMARK This file was initially created by ADtoHT 2.1 on 07-Sep-96 18:20:14 @REMARK ADtoHT is © 1993-1995 Christian Stieber @NODE MAIN "dopus/ipc.h" @TOC "DopusSDK/MAIN" @{"dopus/ipc.h" LINK File} @{b}Structures@{ub} @{"_IPC" LINK "dopus/ipc.h/File" 24} @{b}Typedefs@{ub} @{"IPCData" LINK "dopus/ipc.h/File" 24} @{"IPCMessage" LINK "dopus/ipc.h/File" 11} @{b}#defines@{ub} @{"IPCDATA()" LINK "dopus/ipc.h/File" 36} @{"IPCF_GETPATH" LINK "dopus/ipc.h/File" 40} @{"IPCM_STACK()" LINK "dopus/ipc.h/File" 41} @{"IPCSIG_HIDE" LINK "dopus/ipc.h/File" 64} @{"IPCSIG_QUIT" LINK "dopus/ipc.h/File" 66} @{"IPCSIG_SHOW" LINK "dopus/ipc.h/File" 65} @{"REPLY_NO_PORT" LINK "dopus/ipc.h/File" 20} @{"REPLY_NO_PORT_IPC" LINK "dopus/ipc.h/File" 21} @{"SET_IPCDATA()" LINK "dopus/ipc.h/File" 37} @ENDNODE @NODE File "dopus/ipc.h" #ifndef _DOPUS_IPC #define _DOPUS_IPC /***************************************************************************** Inter-process communication *****************************************************************************/ // IPC message typedef struct struct Message msg; // Exec message ULONG command; // Message command ULONG flags; // Message flags APTR data; // Message data APTR data_free; // Data to be FreeVec()ed automatically @{"struct _IPC" LINK File 24} *sender; // Sender IPC } IPCMessage; #define REPLY_NO_PORT (struct MsgPort *)-1 // Sync msg, no port supplied #define REPLY_NO_PORT_IPC (struct MsgPort *)-2 // Sync msg from a non-IPC process // IPC process typedef struct _IPC { struct MinNode node; struct Process *proc; // Process pointer @{"IPCMessage" LINK File 11} startup_msg; // Startup message struct MsgPort *command_port; // Port to send commands to @{"struct ListLock" LINK "dopus/lists.h/File" 63} *list; // List we're a member of APTR userdata; APTR memory; // Memory struct MsgPort *reply_port; // Port for replies ULONG flags; // Flags } IPCData; #define IPCDATA(ipc) ((APTR)ipc->userdata) #define SET_IPCDATA(ipc,data) ipc->userdata=(APTR)data // Used in the stack paramter for IPC_Launch #define IPCF_GETPATH (1<<31) // Want copy of path list #define IPCM_STACK(s) (s&0xffffff) // Mask out stack value // Pre-defined commands enum { IPC_COMMAND_BASE=0x8000000, IPC_STARTUP, // Startup command IPC_ABORT, // Abort! IPC_QUIT, // Quit process IPC_ACTIVATE, // Activate process IPC_HELLO, // Something saying hello IPC_GOODBYE, // Something saying goodbye IPC_HIDE, // Process, hide thyself IPC_SHOW, // Tell process to reveal itself IPC_RESET, // Process should reset IPC_HELP, // Help! IPC_NEW, // Create something new IPC_GOT_GOODBYE, // Got goodbye from something IPC_IDENTIFY, // Identify yourself IPC_PRIORITY, // Change your priority to this IPC_REMOVE, // Remove yourself }; // Pre-defined signals #define IPCSIG_HIDE SIGBREAKF_CTRL_D #define IPCSIG_SHOW SIGBREAKF_CTRL_E #define IPCSIG_QUIT SIGBREAKF_CTRL_F ULONG IPC_Command(@{"IPCData" LINK File 24} *,ULONG,ULONG,APTR,APTR,struct MsgPort *); @{"IPCData" LINK File 24} *IPC_FindProc(@{"struct ListLock" LINK "dopus/lists.h/File" 63} *,char *,BOOL,ULONG); void IPC_Flush(@{"IPCData" LINK File 24} *); void IPC_Free(@{"IPCData" LINK File 24} *); long IPC_Launch(@{"struct ListLock" LINK "dopus/lists.h/File" 63} *,IPCData **,char *,ULONG,ULONG,ULONG,struct Library *); void IPC_ListCommand(@{"struct ListLock" LINK "dopus/lists.h/File" 63} *,ULONG,ULONG,ULONG,BOOL); @{"IPCData" LINK File 24} *IPC_ProcStartup(ULONG *,ULONG (*__asm)(register __a0 @{"IPCData" LINK File 24} *,register __a1 APTR)); void IPC_Reply(@{"IPCMessage" LINK File 11} *); #endif @ENDNODE